const withCSS = require('@zeit/next-css')
const withTypescript = require('@zeit/next-typescript')

/* With additional configuration on top of CSS Modules */
module.exports = withTypescript(
  withCSS({
    cssModules: true,
    cssLoaderOptions: {
      camelCase: true,
      namedExport: true
    },
    webpack (config, options) {
      if (!options.isServer) {
        /* Using next-css */
        for (let entry of options.defaultLoaders.css) {
          if (entry.loader === 'css-loader') {
            entry.loader = 'typings-for-css-modules-loader'
            break
          }
        }

        /* Using next-less */
        /*
      for (let entry of options.defaultLoaders.less) {
        if (entry.loader === 'css-loader') {
          entry.loader = 'typings-for-css-modules-loader';
          break;
        }
      }
      */

        /* Using next-sass */
        /*
      for (let entry of options.defaultLoaders.sass) {
        if (entry.loader === 'css-loader') {
          entry.loader = 'typings-for-css-modules-loader';
          break;
        }
      }
      */

        /* Using next-stylus */
        /*
      for (let entry of options.defaultLoaders.stylus) {
        if (entry.loader === 'css-loader') {
          entry.loader = 'typings-for-css-modules-loader';
          break;
        }
      }
      */
      }

      return config
    }
  })
)
